@echo off
chcp 65001 >nul
cls
color 0A

echo.
echo ════════════════════════════════════════════
echo   模拟第三方APP获取位置
echo ════════════════════════════════════════════
echo.
echo 📱 这个脚本会像第三方APP一样获取系统位置
echo    用于验证模拟位置是否真的生效
echo.

echo 检测设备...
adb devices | findstr "device$"
echo.

echo 请选择设备：
echo   1. 4f6c2e31 (真机)
echo   2. emulator-5554 (模拟器)
echo   3. 默认设备
echo.

set /p choice=输入选项 (1/2/3): 

if "%choice%"=="1" (
    set DEVICE=-s 4f6c2e31
) else if "%choice%"=="2" (
    set DEVICE=-s emulator-5554
) else (
    set DEVICE=
)

echo.
echo ════════════════════════════════════════════
echo  方法 1: 使用系统位置命令
echo ════════════════════════════════════════════
echo.

echo 正在获取当前系统位置（就像第三方APP一样）...
echo.

adb %DEVICE% shell dumpsys location > temp_location.txt

echo ┌────────────────────────────────────────┐
echo │  GPS Provider 最后位置                 │
echo └────────────────────────────────────────┘
echo.
type temp_location.txt | findstr /C:"gps" /C:"Location" | findstr /C:"latitude" /C:"longitude"
echo.

echo ┌────────────────────────────────────────┐
echo │  Network Provider 最后位置             │
echo └────────────────────────────────────────┘
echo.
type temp_location.txt | findstr /C:"network" | findstr /C:"Location" /C:"latitude" /C:"longitude"
echo.

echo ┌────────────────────────────────────────┐
echo │  Fused Provider 最后位置               │
echo └────────────────────────────────────────┘
echo.
type temp_location.txt | findstr /C:"fused" /C:"FusedLocation" | findstr /C:"latitude" /C:"longitude"
echo.

del temp_location.txt 2>nul

pause

echo.
echo ════════════════════════════════════════════
echo  方法 2: 安装测试APP获取位置
echo ════════════════════════════════════════════
echo.

echo 正在创建测试APP...
echo.

rem 创建测试APP的源代码
mkdir test_location_app 2>nul
cd test_location_app

echo 创建测试项目...

rem 这里可以创建一个简单的测试APP
echo.
echo ⚠️ 方法2需要完整的Android项目
echo    推荐使用方法3或方法4
echo.

cd ..

pause

echo.
echo ════════════════════════════════════════════
echo  方法 3: 使用ADB直接查询LocationManager
echo ════════════════════════════════════════════
echo.

echo 📍 查询所有Provider的状态...
echo.

adb %DEVICE% shell dumpsys location | findstr /C:"provider" /C:"test" /C:"mock"
echo.

pause

echo.
echo ════════════════════════════════════════════
echo  方法 4: 实时监听位置变化（推荐）
echo ════════════════════════════════════════════
echo.

echo 💡 这个方法会实时显示系统位置变化
echo    就像第三方APP实时监听位置一样
echo.

echo [1] 安装测试应用...
if not exist test-location.apk (
    echo.
    echo ⚠️ 测试APK不存在，正在创建...
    echo.
    
    rem 创建一个简单的位置监听shell脚本
    echo 正在准备shell监听脚本...
    
    echo am start -n com.google.android.gms/.location.settings.LocationHistoryActivity > test_loc.sh
    adb %DEVICE% push test_loc.sh /data/local/tmp/
    del test_loc.sh
)

echo.
echo [2] 开始监听系统位置...
echo.
echo 📱 现在请在手机上设置模拟位置
echo.
echo 👀 观察下方输出的位置信息：
echo.

timeout /t 3 >nul

echo ════════════════════════════════════════════
echo  实时位置输出
echo ════════════════════════════════════════════
echo.

rem 持续监控位置变化
:loop
cls
echo.
echo ════════════════════════════════════════════
echo   实时位置监控 - %date% %time%
echo ════════════════════════════════════════════
echo.

echo 🌍 当前系统位置：
echo.

rem 获取GPS位置
for /f "tokens=*" %%a in ('adb %DEVICE% shell dumpsys location ^| findstr /C:"last location" ^| findstr /C:"gps"') do (
    echo [GPS] %%a
)

rem 获取Network位置
for /f "tokens=*" %%a in ('adb %DEVICE% shell dumpsys location ^| findstr /C:"last location" ^| findstr /C:"network"') do (
    echo [Network] %%a
)

rem 检查是否有mock provider
echo.
echo 🔧 Mock Provider 状态：
adb %DEVICE% shell dumpsys location | findstr /C:"mock" /C:"test"

echo.
echo ════════════════════════════════════════════
echo.
echo 按 Ctrl+C 停止监控，或等待5秒自动刷新...
echo.

timeout /t 5 >nul
goto loop

pause

